package com.czk.rdd.operator.action

import org.apache.spark.{SparkConf, SparkContext}

/**
 * @Author:ChenZhangKun
 * @Date: 2021/12/10 15:27
 */
object SerializableDemo {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    val sc = new SparkContext(sparkConf)
    val rdd = sc.makeRDD(List(1, 2, 3, 4))
    val user = new User
    // 因为要发送给Executor，所以对象必须进行网络序列化
    // RDD算子传递的函数是会包含闭包操作，那么就会进行检测功能-》即使遍历不会进去，也会对传入的参数进行闭包检测，是否进行序列化等
    rdd.collect().foreach(
      num => {
        println(num + user.age)
      }
    )

    sc.stop()
  }
  // 序列化

  class User extends Serializable {
    var age: Int = 30
  }

}
